#include "QcTestConfigDialog.h"
#include "ui_testconfigdialog.h"
#include "QcDictDirModel.h"
#include "KpTestInfo.h"

QcTestConfigDialog::QcTestConfigDialog(QString dictRootPath, QWidget *parent)
    : QDialog(parent)
    , ui(new Ui::QcTestConfigDialog)
{
    ui->setupUi(this);

    auto model = new QcDictDirModel;
    auto root = model->setRootPath(dictRootPath);
    ui->treeView->setModel(model);
    ui->treeView->setRootIndex(root);
    ui->treeView->setHeaderHidden(true);
    for (int i = 1; i < model->columnCount(); i++)
        ui->treeView->setColumnHidden(i, true); // 只显示第1列
}

QcTestConfigDialog::~QcTestConfigDialog()
{
    delete ui;
}

QStringList QcTestConfigDialog::getRange() const
{
    QStringList sl;
    getRange_(ui->treeView->rootIndex(), sl);
    return sl;
}

void QcTestConfigDialog::getRange_(const QModelIndex& index, QStringList& sl) const
{
    auto m = (QcDictDirModel*)ui->treeView->model();
    if (m->data(index, Qt::CheckStateRole).toInt() == Qt::Checked) {
        sl << m->filePath(index);
        return;
    }

    for (int i = 0; i < m->rowCount(index); i++)
        getRange_(m->index(i, 0, index), sl);
}

int QcTestConfigDialog::getMode() const
{
    if (ui->dictate->isChecked())
        return KpTestInfo::K_DICTATE;
    if (ui->phonetic->isChecked())
        return KpTestInfo::K_PHONETIC;
    if (ui->english->isChecked())
        return KpTestInfo::K_ENGLISH;
    if (ui->chinese->isChecked())
        return KpTestInfo::K_CHINESE;

    return KpTestInfo::K_ENGLISH;
}

int QcTestConfigDialog::getAmount() const
{
    return ui->amount->value();
}
